home *** CD-ROM | disk | FTP | other *** search
- ;
- ;
- ; (c) 1999 Cyborg
-
- {* Include sys:coder/preass/Options.p *}
- {* Include sys:coder/preass/Prozeduren.p *}
-
- {* String: Version="$VER: mailstat 0.1"*}
-
- {* Structure sockaddr_in(),sin_len(BYTE),sin_family(BYTE),sin_port(WORD)
- sin_addr(LONG),DUMMY1(LONG),DUMMY2(LONG)*}
-
- {* Structure Sockaddr(),SA_Len(BYTE),SA_Family(BYTE)
- SA_Data[14]*}
-
- {* Structure Hostent,H_name(CHAR),h_aliases(APTR),h_addrtype(LONG)
- h_length(LONG),H_addr_list(CHAR)*}
-
- {* IncBlock: Puffer,2048*}
-
- {* Const AF_INET=2
- Sock_STREAM=1
- FIONBIO=$8004667e*}
-
- {* incVar: Addr*}
-
-
-
- recv[d0,d1,d2,d3]:
- {* Stackframe Socket=d0,Zeiger=d1,Laenge=d2,time=d3,Readlen*}
- While Time>0
- {
- Readlen=TCP_recv(Socket,Zeiger,Laenge,0)
- If Readlen>0 breakwhile
- Time==Time-25
- Delay(25)
- }
- {* UnFrameReturn Readlen*}
-
- Removeeol[a0,d7]:
- subq.l #1,d7
- .l1:cmpi.b #$0a,(a0)
- bne .l2
- move.b #" ",(a0)+
- dbra d7,.l1
- RTS
- .l2:lea 1(a0),a0
- dbra d7,.l1
- RTS
-
- TCP_Write[d0,a0,d1,d2]:
- {* StackFrame wr,Socket=d0,msg=a0,MsgLen=d1,flags=d2*}
- While (Wr=TCP_Send(Socket,msg,msglen,flags))#msglen
- {
- Msg==Msg+Wr
- Msglen==MsgLen-Wr
- }
- {* UnFrameReturn *}
-
-
- {* Incblock: Options,50*}
-
- TCPFgets[d0]
- {* StackFrame Socket=d0,Res*}
- If (res=Recv(Socket,&puffer,1000,500))>0
- {
- Vprintf(&Puffer,>NullTags:0)
- Res=.w0(&Puffer)
- IF Res=#"+O"
- {
- {* UnFrameReturn Res*}
- }
- }
- {* UnFrameReturn 0*}
-
- GleichHost[a0,a1]:
- move.b (a0)+,d0
- move.b (a1)+,d1
- cmpi.b #$20,d0
- beq .ende
- cmpi.b #".",d0
- beq .Punkt
- cmpi.b #".",d1
- beq .Ende
- bset #5,d0
- bset #5,d1
- cmp.b d0,d1
- beq GleichHost
- .Ende:
- moveq.l #0,d0
- RTS
- .punkt:
- cmpi.b #" ",d1
- beq .ok
- cmpi.b #$0a,d1
- beq .ok
- cmpi.b #$00,d1
- beq .ok
- cmp.b d0,d1
- bne .Ende
- .ok:moveq.l #1,d0
- RTS
-
-
- Start:
- OH=output()
- ; Copymem("rzcomm1\$0a\$00",&options,?)
- ; Adresse==#Options
- ; laenge=Countstring(&options)
- If GetFilename()=0
- {
- Write(OH,"Kein Hostname angegeben\n",?)
- {* Return 5*}
- }
- {* IncBlock: Username,50*}
- {* IncBlock: Passwort,50*}
- {* Flush *}
- VPrintf("Hallo\n",&NullTags)
- CopyNextString(NextArg,&username)
- CopyNextString(NextArg,&Passwort)
- If (IH=Open("envarc:tcp/mailstat.cfg",#mode_old))#0
- {
- While Fgets(IH,&Puffer,100)#0
- {
- If GleichHost(&Puffer,&Filename)#0
- {
- CopyNextString(&Puffer,&Filename)
- CopyNextString(NextArg,&Username)
- CopyNextString(NextArg,&Passwort)
- {* Break *}
- }
- }
- Close(IH)
- }
- If (socket=TCP_Socket(AF_INET,SOCK_STREAM,0))#-1
- {
- Vprintf("Socket open...\n",#NullTags)
- If (he=TCP_gethostbyname(&Filename))#0
- {
- Vprintf("Hostname ok...\n",#NullTags)
- #AF_Inet=>sockaddr_in.sin_family
- #110=>sockaddr_in.sin_port
- Zeiger=.lhostent.H_addr_list(he)
- addr==(Zeiger)
- addr==(Addr)
- addr=>sockaddr_in.sin_addr
- ret=TCP_Connect(Socket,&Sockaddr_in,sizeof(sockaddr_in))
- If ret#-1
- {
- Vprintf("Connected...\n",#NullTags)
- If TCP_IoCtlSocket(Socket,FIONBIO,>FIONBIOTag:1,0)=-1
- {
- TCP_Errno()
- }
- Fillbuffer(&Puffer,0,10)
- Vprintf("Begrüßung durch ...\n",#NullTags)
- If TCPFGets(Socket)#0
- {
- Puffer=="USER "+Username+"\n"
- len=Countstring(&Puffer)
- TCP_Write(Socket,&Puffer,Len,0)
- If TCPFGets(Socket)#0
- {
- Puffer=="PASS "+Passwort+"\n"
- len=Countstring(&Puffer)
- TCP_Write(Socket,&Puffer,Len,0)
- If TCPFgets(Socket)#0
- {
- TCP_Write(Socket,"LIST\n",?,0)
- If (res=Recv(Socket,&puffer,1000,500))>0
- {
- Vprintf(&Puffer,&NullTags)
- }
-
- }
- }
- TCP_Write(Socket,"QUIT\n",?,0)
- }
- }
- }
- TCP_CloseSocket(Socket)
- }
- {* Return *}
-